package com.cmc.cloud.cmclink.doc.convert;

import com.cmc.cloud.cmclink.doc.api.document.rep.BlnoBaseInfoRespDto;
import com.cmc.cloud.cmclink.doc.api.document.rep.BlnoRespDto;
import com.cmc.cloud.cmclink.doc.api.document.rep.BlnoRespMktDto;
import com.cmc.cloud.cmclink.doc.api.document.req.si.*;
import com.cmc.cloud.cmclink.doc.entity.BlnoDO;
import com.cmc.cloud.cmclink.doc.mq.SiEdiReqVO;
import com.cmc.cloud.cmclink.doc.vo.blnoblprintlogvo.BlnoBlPrintLogCreateReqVO;
import com.cmc.cloud.cmclink.doc.vo.blnoblprintlogvo.BlnoMaintenanceInfoRespVO;
import com.cmc.cloud.cmclink.doc.vo.blnovo.*;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

import java.util.List;

/**
 * 提单主信息 Convert
 *
 * @author 集运管理员
 */
@Mapper
public interface BlnoConvert {

    BlnoConvert INSTANCE = Mappers.getMapper(BlnoConvert.class);

    /**
     * 属性转换
     *
     * @param bean
     * @return
     */
    BlnoDO convert(BlnoCreateReqVO bean);

    /**
     * 属性转换
     *
     * @param bean
     * @return
     */
    BlnoDO convert(BlnoUpdateReqVO bean);

    /**
     * 属性转换
     *
     * @param bean
     * @return
     */
    BlnoRespVO convert(BlnoDO bean);

    /**
     * 属性转换
     *
     * @param list
     * @return
     */
    List<BlnoRespVO> convertList(List<BlnoDO> list);

    /**
     * 属性转换
     *
     * @param blnoDO
     * @return
     */
    BlnoRespDto convertBlnoRespDto(BlnoDO blnoDO);

    /**
     * 属性转换
     *
     * @param blnoBaseInfoDto dto
     * @return BlnoBaseInfoVO
     */
    BlnoBaseInfoVO convertBlnoBaseInfoVO(BlnoBaseInfoDto blnoBaseInfoDto);

    /**
     * 属性转换
     *
     * @param data data
     * @return BlnoBaseInfoVO
     */
    BlnoBaseInfoVO convertBlnoBaseInfoVO(SiEdiReqVO.Data data);
    /**
     * 属性转换
     *
     * @param blnoBaseInfoVO
     * @return
     */
    BlnoBaseInfoDto convertBlnoBaseInfoDto(BlnoBaseInfoVO blnoBaseInfoVO);

    /**
     * 属性转换
     *
     * @param blnoDO
     * @return
     */
    BlnoBaseInfoRespDto convertBlnoBaseInfoRespDto(BlnoDO blnoDO);

    /**
     * 属性转换
     *
     * @param blnoDO
     * @return
     */
    BlnoRespMktDto convertBlnoRespMktDto(BlnoDO blnoDO);

    /**
     * 属性转换
     *
     * @param blnoDoList
     * @return
     */
    List<BlnoRespDto> convertBlnoRespDtos(List<BlnoDO> blnoDoList);

    /**
     * 属性转换
     *
     * @param blnoDoList
     * @return
     */
    List<BlnoRespMktDto> convertBlnoRespMktDtos(List<BlnoDO> blnoDoList);

    /**
     * 属性转换
     *
     * @param siDetail
     * @return
     */
    BlnoInfoDto convertBlnoInfoDto(BlnoInfoVO siDetail);
    /**
     * 属性转换
     *
     * @param blnoMaintenanceInfoRespVO
     * @return
     */
    BlnoMaintenanceInfoRespDto convertBlnoMaintenanceInfoRespVO(BlnoMaintenanceInfoRespVO blnoMaintenanceInfoRespVO);
    /**
     * 属性转换
     *
     * @param printEditDto
     * @return
     */
    BlnoBlPrintLogCreateReqVO convertPrintEditDto(PrintEditDto printEditDto);
}
